package com.example.buildermode.three;

/**
 * @version 1.0.0
 * @className: MovieBuilder
 * @description: 具体建造者
 * @author: zhangjunfa
 * @date: 2022/6/12 15:42
 */
public class MovieBuilder implements Builder {
    //这里是上转型对象的使用
    public Product movie = new Movie();

    /*
       假如我们创建的对象只关心行为特征，那么就可以使用父类或者接口来声明对象。
      这样就不会在创建的时候就不会涉及到具体对象类的其他私有属性。
      如果我们在创建的时候，关心这些属性。那么就直接使用子类new出对象。
      Movie movie=new Movie();
       */


    @Override
    public void recruiting() {
        movie.setAuthor("詹姆斯·卡梅隆");
    }

    @Override
    public void writeScript() {
        movie.setWorkName("阿凡达");
    }

    @Override
    public void raiseFunds() {
        movie.setFunds(200000);
    }

    @Override
    public void propagate() {
        movie.setContent("首部3D科幻巨作！");
    }

    @Override
    public void released() {
        movie.setWorkType("3D电影");
    }

    @Override
    public Product buildProduct() {
        return movie;
    }
}
